From: Jeroen van der Heijden Date: Mon, 7 Jan 2019 08:25:14 +0000 (+0100) Subject: Create thread for groups (not from treadpool) X-Git-Tag: archive/raspbian/2.0.44-1+rpi1~1^2~3^2~7^2~2^2~9 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=82d2f84238ade594eb4f012569a9561eaf8b2645;p=siridb-server.git Create thread for groups (not from treadpool) --- diff --git a/include/siri/db/groups.h b/include/siri/db/groups.h index 523ed731..1af1feed 100644 --- a/include/siri/db/groups.h +++ b/include/siri/db/groups.h @@ -41,7 +41,7 @@ typedef struct siridb_groups_s siridb_groups_t; #include siridb_groups_t * siridb_groups_new(siridb_t * siridb); -void siridb_groups_start(siridb_groups_t * groups); +void siridb_groups_start(siridb_t * siridb); int siridb_groups_save(siridb_groups_t * groups); ssize_t siridb_groups_get_file(char ** buffer, siridb_t * siridb); void siridb_groups_init_nseries(siridb_groups_t * groups); @@ -72,6 +72,6 @@ struct siridb_groups_s vec_t * nseries; /* list of series we need to assign to groups */ vec_t * ngroups; /* list of groups which need initialization */ uv_mutex_t mutex; - uv_work_t work; + uv_thread_t thread; }; #endif /* SIRIDB_GROUPS_H_ */ diff --git a/include/siri/siri.h b/include/siri/siri.h index add8a439..aa615da9 100644 --- a/include/siri/siri.h +++ b/include/siri/siri.h @@ -17,7 +17,7 @@ #define PCRE2_CODE_UNIT_WIDTH 8 #define SIRI_MAX_SIZE_ERR_MSG 1024 -#define MAX_NUMBER_DB 4 +#define MAX_NUMBER_DB 1024 typedef enum { diff --git a/src/siri/db/db.c b/src/siri/db/db.c index 2c35e7db..f4f4d1e6 100644 --- a/src/siri/db/db.c +++ b/src/siri/db/db.c @@ -264,7 +264,7 @@ siridb_t * siridb_new(const char * dbpath, int lock_flags) uv_mutex_unlock(&siri.siridb_mutex); /* start groups update thread */ - siridb_groups_start(siridb->groups); + siridb_groups_start(siridb); /* start tasks */ siridb_tasks_init(&siridb->tasks); diff --git a/src/siri/db/groups.c b/src/siri/db/groups.c index 16fe0049..6c970331 100644 --- a/src/siri/db/groups.c +++ b/src/siri/db/groups.c @@ -49,7 +49,7 @@ static int GROUPS_load(siridb_groups_t * groups); static void GROUPS_free(siridb_groups_t * groups); static int GROUPS_pkg(siridb_group_t * group, qp_packer_t * packer); static int GROUPS_nseries(siridb_group_t * group, void * data); -static void GROUPS_loop(uv_work_t * work); +static void GROUPS_loop(void * arg); static void GROUPS_loop_finish(uv_work_t * work, int status); static int GROUPS_write(siridb_group_t * group, qp_fpacker_t * fpacker); static void GROUPS_init_groups(siridb_t * siridb); @@ -76,7 +76,6 @@ siridb_groups_t * siridb_groups_new(siridb_t * siridb) groups->nseries = vec_new(VEC_DEFAULT_SIZE); groups->ngroups = vec_new(VEC_DEFAULT_SIZE); uv_mutex_init(&groups->mutex); - groups->work.data = (siridb_t *) siridb; if (!groups->groups || !groups->nseries || !groups->ngroups) { @@ -108,13 +107,9 @@ siridb_groups_t * siridb_groups_new(siridb_t * siridb) /* * Start group thread. */ -void siridb_groups_start(siridb_groups_t * groups) +void siridb_groups_start(siridb_t * siridb) { - uv_queue_work( - siri.loop, - &groups->work, - GROUPS_loop, - GROUPS_loop_finish); + uv_thread_create(&siridb->groups->thread, GROUPS_loop, siridb); } /* @@ -414,13 +409,12 @@ static int GROUPS_2vec(siridb_group_t * group, vec_t * groups_list) } - /* * Group thread. */ -static void GROUPS_loop(uv_work_t * work) +static void GROUPS_loop(void * arg) { - siridb_t * siridb = (siridb_t *) work->data; + siridb_t * siridb = arg; siridb_groups_t * groups = siridb->groups; uint64_t mod_test = 0; @@ -464,18 +458,6 @@ static void GROUPS_loop(uv_work_t * work) } groups->status = GROUPS_CLOSED; -} - -static void GROUPS_loop_finish( - uv_work_t * work, - int status __attribute__((unused))) -{ - /* - * Main Thread - */ - siridb_t * siridb = (siridb_t *) work->data; - - /* decrement groups reference counter */ siridb_groups_decref(siridb->groups); }